package com.compmov.libraries;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import android.util.Log;

import com.compmov.datamodel.Persona;

public class Utils {
	
	private static Persona persona;
	private static final String TAG="UTILS";
	public static final String DEFAULT_SERVER_URL ="http://192.168.100.199:8080/AdviseMe_Server";
	
	public static final Integer INIT_SOLICITUD=1;
	public static final Integer ACEPT_SOLICITUD=2;
	public static final Integer CANCEL_SOLICITUD=3;
	
	public static void setPersona(Persona per){
		persona=per;
	}
	
	public static Persona getPersona(){
		return persona;
	}
	
	public static String obtenFecha(){
		Date now=new Date();
		SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
		String fecha=formatoDeFecha.format(now);
		return fecha;
	}
	
    public static void CopyStream(InputStream is, OutputStream os)
    {
        final int buffer_size=1024;
        try
        {
            byte[] bytes=new byte[buffer_size];
            for(;;)
            {
              int count=is.read(bytes, 0, buffer_size);
              if(count==-1)
                  break;
              os.write(bytes, 0, count);
            }
        }
        catch(Exception ex){}
    }
    
    /**
	 * Lee el contenido del archivo de propiedades
	 * 
	 * @param baseDir
	 *            Directorio donde se encuentra almacenado el archivo
	 * @return Objeto con las propiedades leidas del archivo
	 */
	public static Properties loadPropertyFile(String baseDir) {
		File root = new File(baseDir, "AdviseMe.properties");
		// Si se puede leer el archivo
		if (root.canRead()) {
			try {
				// Se lee el contido del archivo y se convierte en un objeto de
				// propiedades
				FileInputStream fIn = new FileInputStream(root);
				Properties properties = new Properties();
				properties.load(fIn);
				return properties;
			} catch (IOException e) {
				// Si no se pudo leer el archivo
				Log.e(TAG, "Error al leer el archivo de propiedades", e);
			}
		} else {
			// Si no se tiene permiso para leer el archivo
			Log.e(TAG,
					"Error al leer el archivo de propiedades - Permiso denegado");
		}
		// Si ocurrio algun error se retorna un objeto de propiedades vacio
		return new Properties();
	}

	/**
	 * Almacenar las propiedades en un archivo
	 * 
	 * @param baseDir
	 *            Directorio donde se almacenaran las propiedades
	 * @param properties
	 *            Propiedades a ser almacenadas
	 */
	public static void savePropertyFile(String baseDir, Properties properties) {
		File root = new File(baseDir);
		// Se verifican los permisos de escritura del directorio señalado
		if (root.canWrite()) {
			FileOutputStream fOut;
			try {
				// Se crea el objeto que se utilizara para guardar el archivo
				fOut = new FileOutputStream(root.getAbsoluteFile()
						+ "/AdviseMe.properties");
				// Se guardan las propiedades en el archivo
				properties.save(fOut,
						"Archivo de propiedades para Aplicacion AdviseMe");
			} catch (FileNotFoundException e) {
				// Si no se encuentra el archivo
				Log.e(TAG, "Error al salvar el archivo de propiedades", e);
			}
		} else {
			// Si no se tienen permisos de escritura
			Log.e(TAG,
					"Error al salvar el archivo de propiedades - Permiso denegado");
		}
	}
}